package com.jt.controller;

import com.jt.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;

//@Controller  //将类交给SpringMVC管理，SpringMVC交给Spring容器管理
//@ResponseBody   //将数据转化为"特殊的字符串"返回
@RestController
@CrossOrigin      //允许跨域

public class UserController {

    /**
     * URL地址：http://localhost:8080/hello  get请求
     * 参数： 无
     * 返回值：  "你好，SpringMVC的字符串"
     */
    @RequestMapping("/hello")
    public String hello(){
        return "你好,SpringMVC";
    }

    @RequestMapping("/cat")
    public String Cat(){

        return "小猫，喵喵喵";
    }

    @RequestMapping("/dog")
    public String dog(){
        return "小狗，汪汪汪";
    }


    /**
     * 需求：接收参数 name=xxx age=xxx
     * URL:http://localhost:8080/findUserByNA?name=tomcat&age=18
     * 返回值："数据正确：name:age"
     * 知识点：
     *      1.通过url中的key获取参数
     */

    @RequestMapping("/findUserByNA")
    public String findUserByNA(String name,int age){

        return "数据正确:"+name+":"+age;
    }

    @RequestMapping("/findUserByNA2")
    public String findUserByNA2(User user){

        return "数据正确:"+user.toString();
    }

    /**
     * URL:http://localhost:8080/hobby?hobby=敲代码,睡觉,打游戏,熬夜
     */

    @RequestMapping("/hobby")
    public String hobby(String[] hobby){
//        String[] array = hobby.split(",");
//        return Arrays.toString(array[0]);
        //数组转化为字符串
        return Arrays.toString(hobby);
    }

    /**
     * URL:http://localhost:8080/findUserByNA?name=tomcat&age=18
     * 参数：name/age/sex
     * 返回值：返回值获取的数据
     *
     * restFul语法：
     *        1.参数与参数之间使用/分割
     *        2.需要接收的参数使用{}包裹
     *        3.参数接收时采用@PathVariable取值
     * 简化写法： 如果{name}的属性与对象的属性名称一致，则可以使用对象接收
     */

    @RequestMapping("/findUser/{name}/{age}/{sex}")
    public String findUser(User user
//                           @PathVariable String name,
//                           @PathVariable int age,
//                           @PathVariable String sex)
    ){

        return user.toString();
    }


    /**
     * URL:http://localhost:8080/findJSON?name=tomcat&age=18
     * 参数：name=tomcat&age=18
     * 返回值：User对象的JSON
     * 知识点：
     *      1.    @ResponseBody  //将返回值转化为JSON串
     *      2.如果返回String类型，则@ResponseBody将字符串本身返回给前端
     */

    @RequestMapping("/findJSON")
    @ResponseBody  //将返回值转化为JSON串
    public User findJSON(User user){
        user.setId(1010);
        user.setSex("男");
//        user对象转化为JSON??   @ResponseBody
        return user;
    }
}


















